package com.hukun.singleton;

public class Animal {

private  String type;
private String sex;

    //1，构造函数私有化
    private Animal() {
    }

    //2,创建一个属性是自己 、static变量 对于静态变量在内存中只有一个拷贝（节省内存），JVM只为静态分配一次内存，在加载类的过程中完成静态变量的内存分配
    // 饿汉方式
    private  static   Animal annimal=new Animal();


    //3 创建一个getInstance()方法 饿汉方式 不管内存中是不是存在实例都直接返回  单例模式的经典使用方式
    public static Animal getInstance()
    {
        return annimal;
    }

    // 3.懒汉式 private  static   Animal annimal;
    //懒汉式 创建一个getInstance()方法对于  懒汉式，就是在getInstance方法中增加一个if判断，判断当前对象是否为null，如果为null，则创建实例  会有线程安全的问题 不建议使用
    public static Animal getInstance2()
    {
        if(annimal==null)
            annimal = new Animal();

        return annimal;
    }




    public String getType() {
        return type;
    }

    public void setType(String type) {
        this.type = type;
    }

    public String getSex() {
        return sex;
    }

    public void setSex(String sex) {
        this.sex = sex;
    }

    @Override
    public String toString() {
        return "Annimal{" +
                "type='" + type + '\'' +
                ", sex='" + sex + '\'' +
                '}';
    }
}
